<?php
namespace app\mall\logic;

use think\facade\Db;

class deliveryAddressLogic{

    /**
     * 添加地址
     * @param array $param
     */
    public function address_add(array $param){
       return Db::table('one_delivery_address')->insert($param);
    }

    /**
     * 地址列表
     * @param int $uid 用户id
     */
    public function address_list(int $uid){
        return Db::table('one_delivery_address')
            ->where('u_id','=',$uid)
            ->order(array('is_default'=>'desc','create_time'=>'desc'))
            ->select();
    }

    /**
     * 删除地址
     * @param int $uid 用户id
     * @param int $id 地址id
     * @return int
     */
    public function address_del(int $uid ,int $id): int{
        return Db::table('one_delivery_address')
            ->where(array(
                array('id','=',$id),
                array('u_id','=',$uid)
            ))->delete();
    }

    /**
     * 地址详情
     * @param int $uid 用户id
     * @param int $id 地址id
     */
    public function address_details(int $uid ,int $id){
        return Db::table('one_delivery_address')
            ->where(array(
                array('id','=',$id),
                array('u_id','=',$uid)
            ))->find();
    }

    /**
     * 修改地址
     * @param int $uid 用户id
     * @param int $id 地址id
     * @param array $param 数据
     */
    public function address_edit(int $uid ,int $id ,array $param):int{
        return Db::table('one_delivery_address')
            ->where(array(
                array('id','=',$id),
                array('u_id','=',$uid)
            ))->update($param);
    }

    /**
     * 将地址设为默认
     * @param int $uid 用户id
     * @param int $id 地址id
     */
    public function address_default(int $uid ,int $id):bool{
        Db::startTrans();
        Db::table('one_delivery_address')
            ->where(array(
                array('u_id','=',$uid)
            ))->update(array('is_default'=>0));//先将全部地址改为非默认
        $res = Db::table('one_delivery_address')
            ->where(array(
                array('id','=',$id),
                array('u_id','=',$uid)
            ))->update(array('is_default'=>1));//将id修改为默认地址
        if ($res){//只判断res，防止没有默认地址的情况下修改不成功
            Db::commit();
            return true;
        }
        Db::rollback();
        return false;
    }

}